Meteor-এ Server-Side Logic পরিচালনা করা একটি গুরুত্বপূর্ণ অংশ, যেখানে আপনি অ্যাপ্লিকেশনের ব্যাকএন্ড পরিচালনা করেন, যেমন ডেটাবেস পরিচালনা, API কল, নিরাপত্তা ব্যবস্থা এবং অন্যান্য সার্ভার সম্পর্কিত কাজ। Server-side logic এর মাধ্যমে, আপনি অ্যাপ্লিকেশনের কার্যকারিতা নিশ্চিত করতে পারেন এবং ক্লায়েন্ট সাইডের সঠিক ডেটা প্রক্রিয়াকরণ নিশ্চিত করতে পারেন।
Meteor-এর Server-Side Logic বেশ সহজ এবং কার্যকরীভাবে পরিচালনা করা যায়, কারণ এতে রয়েছে Meteor Methods, Publications, Security এবং Database Operations এর জন্য সহজ ইন্টারফেস।
১. Meteor Methods ব্যবহার করে Server-Side Logic
Meteor Methods ব্যবহার করে আপনি সার্ভার সাইডে business logic বা অন্যান্য কার্যকলাপ পরিচালনা করতে পারেন। Meteor.methods() ফাংশন ব্যবহার করে সার্ভারের মধ্যে ডেটা প্রক্রিয়াকরণ এবং অন্যান্য কাজ করা যায়।
Meteor Method Example:
// /server/main.js
import { Meteor } from 'meteor/meteor';
Meteor.methods({
  'tasks.insert'(task) {
    if (!this.userId) {
      throw new Meteor.Error('not-authorized');
    }
    // Insert task data into the collection
    Tasks.insert({
      text: task.text,
      createdAt: new Date(),
      owner: this.userId,
    });
  },
  'tasks.remove'(taskId) {
    if (!this.userId) {
      throw new Meteor.Error('not-authorized');
    }
    const task = Tasks.findOne(taskId);
    if (task.owner !== this.userId) {
      throw new Meteor.Error('not-authorized');
    }
    Tasks.remove(taskId);
  },
});
এখানে, tasks.insert এবং tasks.remove মেথড দুটি ব্যবহারকারীর জন্য টাস্ক ইনসার্ট এবং রিমুভ করার কাজ করছে। সার্ভার সাইডে business logic যেমন authorization এবং data validation প্রয়োগ করা হয়েছে।
Client Side Call Example:
// /client/main.js
Meteor.call('tasks.insert', { text: 'Learn Meteor' }, (error, result) => {
  if (error) {
    console.error("Error occurred: ", error.reason);
  } else {
    console.log("Task inserted successfully: ", result);
  }
});
২. Publications and Subscriptions (Data Flow)
Meteor-এ publications এবং subscriptions ব্যবহৃত হয়, যা ক্লায়েন্ট এবং সার্ভারের মধ্যে ডেটার প্রবাহ পরিচালনা করতে সহায়ক।
- Publication: সার্ভার থেকে ডেটা নির্বাচন এবং ক্লায়েন্টকে পাঠানোর জন্য 
Meteor.publish()ব্যবহার করা হয়। - Subscription: ক্লায়েন্ট থেকে সার্ভারের ডেটার জন্য রিকোয়েস্ট পাঠানোর জন্য 
Meteor.subscribe()ব্যবহৃত হয়। 
Publication Example:
// /server/publications.js
Meteor.publish('tasks', function () {
  return Tasks.find({ owner: this.userId });
});
এই publication-এ Tasks কোলেকশন থেকে শুধুমাত্র সেই টাস্কগুলো ফেরত পাঠানো হবে যা সংশ্লিষ্ট ইউজারের মালিকানাধীন।
Subscription Example:
// /client/main.js
Meteor.subscribe('tasks');
এখানে, Tasks কোলেকশনের ডেটা Tasks.find() মাধ্যমে সার্ভার থেকে ক্লায়েন্টে পাঠানো হবে।
৩. Database Operations (MongoDB)
Meteor এর সার্ভারে MongoDB ব্যবহার করা হয়, যা ডেটা সংরক্ষণ এবং পরিচালনার জন্য ব্যবহৃত হয়। Mongo.Collection ব্যবহার করে আপনি ডেটাবেসে ইনসার্ট, আপডেট, রিমুভ ইত্যাদি অপারেশন করতে পারেন।
Mongo Database Example:
// /imports/api/tasks.js
import { Mongo } from 'meteor/mongo';
export const Tasks = new Mongo.Collection('tasks');
এখানে, Tasks কোলেকশনটি তৈরি করা হয়েছে। আপনি এই কোলেকশন ব্যবহার করে ডেটা ইনসার্ট, আপডেট, বা ডিলিট করতে পারবেন।
Insert Example:
Tasks.insert({
  text: 'Complete Meteor tutorial',
  createdAt: new Date(),
  owner: this.userId,
});
Find Example:
const task = Tasks.findOne(taskId);
৪. Security and Authorization
Meteor-এ security এবং authorization গুরুত্বপূর্ণ অংশ। আপনি Meteor.methods() এর মধ্যে কাস্টম authorization logic প্রয়োগ করতে পারেন এবং নিশ্চিত করতে পারেন যে, ইউজার শুধুমাত্র তাদের অধিকারভুক্ত ডেটার ওপর কাজ করতে পারে।
Authorization Example:
// /server/main.js
Meteor.methods({
  'tasks.remove'(taskId) {
    if (!this.userId) {
      throw new Meteor.Error('not-authorized');
    }
    const task = Tasks.findOne(taskId);
    if (task.owner !== this.userId) {
      throw new Meteor.Error('not-authorized');
    }
    Tasks.remove(taskId);
  },
});
এখানে, শুধুমাত্র task.owner যদি ইউজারের this.userId এর সমান হয়, তবেই ইউজার সেই টাস্ক রিমুভ করতে পারবে।
৫. Server-Side Logic with External APIs
Meteor-এ আপনি third-party APIs ব্যবহার করে এক্সটার্নাল সার্ভিসের সাথে যোগাযোগ করতে পারেন, যেমন payment gateways, email services, বা অন্য কোনো REST API। HTTP প্যাকেজের মাধ্যমে আপনি API কল করতে পারেন।
External API Example (HTTP Request):
meteor add http
// /server/main.js
import { HTTP } from 'meteor/http';
Meteor.methods({
  'externalAPI.fetchData'() {
    try {
      const response = HTTP.get('https://api.example.com/data');
      return response.data;
    } catch (error) {
      throw new Meteor.Error('api-error', 'Failed to fetch data from external API');
    }
  },
});
এখানে, Meteor HTTP প্যাকেজ ব্যবহার করে একটি GET রিকোয়েস্ট পাঠিয়েছে এবং API থেকে ডেটা সংগ্রহ করছে।
সারাংশ
Meteor-এ Server-Side Logic পরিচালনা করা সহজ এবং কার্যকরী। Meteor.methods(), Publications, Subscriptions, MongoDB, এবং Security ব্যবহারের মাধ্যমে আপনি সার্ভারের সমস্ত কার্যকলাপ সঠিকভাবে পরিচালনা করতে পারেন। তাছাড়া, third-party API ব্যবহারের মাধ্যমে বাইরের সেবাগুলোর সাথে সংযোগ স্থাপন করা সম্ভব, যা অ্যাপ্লিকেশনের কার্যকারিতা বৃদ্ধি করে। Meteor-এ সঠিক সার্ভার সাইড লজিক তৈরি করা আপনার অ্যাপ্লিকেশনকে নিরাপদ, স্কেলেবল এবং কার্যকরী করে তোলে।
Read more